package Thread;

import com.mysql.cj.jdbc.MysqlDataSource;

import javax.sql.DataSource;

class DBUtil{
    private static volatile DataSource dataSource=null;
    public static Object locker=new Object();
    public static DataSource getInstance (){
        if (dataSource==null){
            synchronized (locker){
                if (dataSource==null){
                    //这种写法会出现线程不安全隐患
//                    dataSource=new MysqlDataSource();
//                    ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/117java?characterEncoding=utf8&useSSL=false");
//                    ((MysqlDataSource)dataSource).setUser("root");
//                    ((MysqlDataSource)dataSource).setPassword("123456");
                    //调整之后，线程就安全了
                    MysqlDataSource ds=new MysqlDataSource();
                    ((MysqlDataSource)ds).setURL("jdbc:mysql://127.0.0.1:3306/117java?characterEncoding=utf8&useSSL=false");
                    ((MysqlDataSource)ds).setUser("root");
                    ((MysqlDataSource)ds).setPassword("123456");
                    dataSource=ds;
                }
            }
        }

        return dataSource;
    }
}
public class Demo8 {
}
